home *** CD-ROM | disk | FTP | other *** search
/ Amiga Developer CD 2.1 / Amiga Developer CD v2.1.iso / Reference / DevCon / Washington_1988 / DevCon88.3 / IEEE / src / div0 / aztec / trapasm.s < prev    next >
Encoding:
Text File  |  1992-08-27  |  739 b   |  25 lines

  1.     include    'exec/types.i'
  2.     include    'exec/tasks.i'
  3.     xref    _localf
  4.     xref    _oldtraphandler
  5.     xdef    _trapintercept
  6. _trapintercept:
  7.     movem.l    d0/a0,-(sp)    ; need a data register
  8.     move.l    8(sp),d0    ; get trap number
  9.     asl.l    #2,d0        ; convert in array index
  10.     lea    _localf,a0
  11.     move.l    0(a0,d0.l),d0    ; get alternate usermode vector
  12.     beq.s _if00000
  13.         cmp.l #-1,d0                                                                                                                    
  14.         beq.s _if00001
  15.             move.l    d0,14(sp)    ; modify rte address
  16. _if00001:
  17.         movem.l    (sp)+,d0/a0    ; restore d0/a0, why?
  18.         addq.l    #4,sp        ; remove trap #
  19.         rte            ; close eyes, plug ears
  20. _if00000:
  21.     movem.l    (sp)+,d0/a0    ;restore d0 contents
  22.     move.l    _oldtraphandler,-(sp)
  23.     rts            ; jump to it
  24.     end
  25.